
#include "main.h"
#include "vtor_elec_module.h"

#define StepMotor_A1_Pin GPIO_PIN_2
#define StepMotor_A1_Port GPIOB
#define StepMotor_A2_Pin GPIO_PIN_7
#define StepMotor_A2_Port GPIOA
#define StepMotor_B1_Pin GPIO_PIN_6
#define StepMotor_B1_Port GPIOA
#define StepMotor_B2_Pin GPIO_PIN_5
#define StepMotor_B2_Port GPIOA

typedef struct VtorStepMotorPinStruct
{
	GPIO_TypeDef* GPIOx;
	uint16_t GPIO_Pin;
}VtorStepMotorPinStruct;


VtorStepMotor motor1 = {0};

VtorStepMotorPinStruct stepMotorPin[] = {
	StepMotor_A1_Port, StepMotor_A1_Pin,
	StepMotor_A2_Port, StepMotor_A2_Pin,
	StepMotor_B1_Port, StepMotor_B1_Pin,
	StepMotor_B2_Port, StepMotor_B2_Pin,
};


void VtorStepMotor_WritePinLevel(VtorStepMotor* motor, int8_t pinIdx, uint8_t pinLevel)
{
	if(motor == &motor1)
	{
		HAL_GPIO_WritePin(stepMotorPin[pinIdx].GPIOx,
			stepMotorPin[pinIdx].GPIO_Pin,
			(GPIO_PinState)pinLevel);
	}
}

void VtorPulseMotor_WritePinLevel(VtorStepMotor* motor, int8_t pinIdx, uint8_t pinLevel)
{
	if(motor == &motor1)
	{
		//HAL_GPIO_WritePin(stepMotorPin[pinIdx].GPIOx,
		//	stepMotorPin[pinIdx].GPIO_Pin,
		//	(GPIO_PinState)pinLevel);
	}
}
void VtorStepMotor_Init(void)
{
	GPIO_InitTypeDef GPIO_InitStruct = {0};

	__HAL_RCC_GPIOA_CLK_ENABLE();
	__HAL_RCC_GPIOB_CLK_ENABLE();

	GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
	GPIO_InitStruct.Pull = GPIO_NOPULL;
	GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
	for(int i = 0; i < 4; i++)
	{
		HAL_GPIO_WritePin(stepMotorPin[i].GPIOx, stepMotorPin[i].GPIO_Pin, GPIO_PIN_RESET);
		GPIO_InitStruct.Pin = stepMotorPin[i].GPIO_Pin;
		HAL_GPIO_Init(stepMotorPin[i].GPIOx, &GPIO_InitStruct);
	}

}
